package com.itheima;

import java.util.Random;
import java.util.Scanner;
/*
 * 宾果游戏：游戏规则，开始时系统会生成一个4位数，由玩游戏者猜，
 * 玩游戏者可以输入一个4位数，其中各位数都不相等，
 * 如果正确，系统返回成功，
 * 如果不正确，系统会返回有几个数字正确并且位置正确，还有几个数字正确，但位置不正确
	1234
	1267    2a0b
	1245    2a1b
 */
public class BingGuo {
    public static void main(String[] args) {
        //拿到随机数对象
        Random rd = new Random();
        //拿到录入数据对象
        Scanner sc = new Scanner(System.in);
        //存放系统生成的随机数的变量
        int result = 0;
        //存放随机数的个，十，百，千位
        int g = 0;
        int s = 0;
        int b = 0;
        int q = 0;
        while (true) {
            //生成随机的四位数0-9999
            result = rd.nextInt(10000);
            //如果它大于1000说明它是一个四位数
            if (result > 1000) {
                //拿到这个随机数的各位
                g = getGeWei(result);
                s = getShiWei(result);
                b = getBaiWei(result);
                q = getQian(result);
                //判断有没有相等的数，如果没有则跳出循环，四位数生成成功
                if (g != s && g != b && g != q && s != b && s != q && b != q) {
                    break;
                }
            }
        }
        //死循环，直到游戏者猜到数后才跳出
        while (true) {
            //用来存放数字正确，位置也正确的数
            int right=0;
            //用来存放数字正确，但位置不正确的数
            int locWrong = 0;
            //用户输入数据
            System.out.println("请输入一个四位数，不要有重复数字");
            int newInt = sc.nextInt();
            //如果数字小于1000或者大于9999说明不是四位数，重新输入，可以加上是否有重复数字的判断
            if (newInt < 1000||newInt>9999) {
                System.out.println("您输入的有误");
                continue;
            }
            //得到用户输入数字的个，十，百，千位数
            int gg = getGeWei(result);
            int ss = getShiWei(newInt);
            int bb = getBaiWei(newInt);
            int qq = getQian(newInt);
            //判断有几个数字正确，位置也正确
            if(gg==g){
                right++;
            }
            if(ss==s){
                right++;
            }
            if(bb==b){
                right++;
            }
            if(qq==q){
                right++;
            }
            //判断有几个数字正确，但位置不正确
            if(gg==s||gg==b||gg==q){
                locWrong++;
            }
            if(ss==g||ss==b||ss==q){
                locWrong++;
            }
            if(bb==g||bb==s||bb==q){
                locWrong++;
            }
            if(qq==g||qq==s||qq==b){
                locWrong++;
            }
            //如果4个数字都正确，就跳出循环，输出成功，否则输出结果，重新让用户输入
            if(right==4){

                System.out.println("成功");
                break;
            }else{
                System.out.println(right+"A"+locWrong+"B");
                //System.out.println(right+"个数字正确，有"+locWrong+"个数字位置错误");
            }
        }
    }

    /**
     * 获取一个四位数的千位
     * @param result
     * @return
     */
    private static int getQian(int result) {
        return result / 10 / 10 / 10 % 10;
    }

    /**
     * 获取一个四位数的百位
     * @param result
     * @return
     */
    private static int getBaiWei(int result) {
        return result / 10 / 10 % 10;
    }

    /**
     * 获取一个四位数的十位
     * @param result
     * @return
     */
    private static int getShiWei(int result) {
        return result / 10 % 10;
    }

    /**
     * 获取一个四位数的个数
     * @param result
     * @return
     */
    private static int getGeWei(int result) {
        return result % 10;
    }
}
